﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MakeIT.Deo.Negocios
{
    public class ConteudoBO
    {

        private deoEntities modelo = null;

        public ConteudoBO()
        {
            modelo = new deoEntities();
        }

        /// <summary>
        /// Recupera Conteudo através do idConteudo
        /// </summary>
        /// <param name="idConteudo"></param>
        /// <returns></returns>
        public conteudoestatico RecuperaConteudo(String idConteudo)
        {
            List<conteudoestatico> listaConteudo = RecuperaConteudo(idConteudo, null);
            if (listaConteudo != null && listaConteudo.Count > 0)
                return listaConteudo[0];
            else
                return null;
        }
        
        public List<conteudoestatico> RecuperaConteudo(string idConteudo, string conteudo)
        {
            // declara objetos
            IQueryable<conteudoestatico> query = modelo.conteudoestatico;

            try
            {
                if (idConteudo!=null)
                    query = query.Where(a => a.idConteudoEstatico == idConteudo);

                if (conteudo!=null)
                    query = query.Where(a => a.conteudoProducao.Contains(conteudo));

                var retornaLista = from not in query
                                   select not;

                if (retornaLista!=null && retornaLista.Count() > 0)
                {
                    return retornaLista.ToList();

                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }


        /// <summary>
        /// Salva um novo registro ou atualiza um já existente 
        /// </summary>
        /// <param name="entidade"></param>
        /// <param name="novo"></param>
        public void SalvaConteudo(conteudoestatico entidade, Boolean novo)
        {
            try
            {

                //Verifica se é um registro novo
                if (novo)
                {
                    //Adiciona um novo registro
                    modelo.AddToconteudoestatico(entidade);
                }
                else
                { 
                    //Efetiva as mudanças na entidade já existente
                    modelo.ApplyPropertyChanges(entidade.EntityKey.EntitySetName, entidade);
                }

                //Efetiva as mudancas já existentes
                modelo.SaveChanges();

            }
            catch (Exception ex)
            {

                throw ex;
            }
        }
  
    }
}
